// 类型约束一致性检查
type foo_t<T:f32|bool|int, U:bool|string|f32|[i32]> = struct{
    T a
    U b
    float c
}

type bar_t<T,U> = struct{
    T a
    U b
}

fn bar_t<T, U>.dump():T {
   println('bar_t any dump', self.a)
   return self.a
}

fn foo_t<T:f32, U:bool>.dump():T {
    println('f32+bool dump', self.a, self.b)
    return self.a
}

fn foo_t<T:f32|bool, U:string>.dump(U c) {
    println('void return, f32|bool+int|string dump', self.a, self.b, c)
}
